﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class area_admin_equipamentos : System.Web.UI.Page
{
    private O OS = new O();
    private ENDERECO Endereco = new ENDERECO();
    private ENDERECOS_CLIENTE EnderecosCli = new ENDERECOS_CLIENTE();
    private HISTORICO_O historico = new HISTORICO_O();
    private MENSAGEN MSG = new MENSAGEN();
    private funcoes Func = new funcoes();
    private dbSisInfoDataContext Banco = new dbSisInfoDataContext();
   

    protected void Page_Load(object sender, EventArgs e)
    {
        // Parametros :
        // 1 - Solicitacoes Aguardando
        // 2 - Solicitacoes Canceladas
        // 3 - Solicitacoes Concluidas

        Session["Titulo"] = "Solicitacoes";

        if (!Page.IsPostBack)
        {
            if (Request.QueryString.HasKeys() && Request.QueryString["a"].Trim() == "1")
            {

                
                  /*  var dados = from C in Banco.CLIENTEs
                                orderby C.Nome ascending
                                select C;

                    // Trazer todos os clientes
                    dropClientes.DataTextField = "Nome";
                    dropClientes.DataValueField = "idCliente";
                    dropClientes.DataSource = dados;
                    dropClientes.DataBind();
                  */
                    pnlInserir0.Visible = true;                
            }
            else
            {
                pnlInserir0.Visible = false;

            }
        }
    }

    protected void btnIncluir_Click(object sender, EventArgs e)
    {
        // verifica se é inserção
        if (ViewState["btn"] != null && ViewState["btn"].ToString().Trim() == "lkbtnEdit")
        {
            DateTime dataabertura = DateTime.Now;
            OS.idCliente = Convert.ToInt32(dropClientes.SelectedValue);
            OS.Problema = txtProblema.Text;
            OS.dtAbertura = dataabertura;
            OS.idEquipameto = Convert.ToInt32(dropEquipamentos.SelectedValue);


            if (rlistBuscaEquipamento.SelectedValue == "1")
            {
                OS.atendimentocampo = true;
                OS.idEnderecoEntrega = Convert.ToInt32(dropEnderecosCliente.SelectedValue);
            }
            else
            {
                OS.atendimentocampo = false;
            }

            Banco.Os.InsertOnSubmit(OS);
            Banco.SubmitChanges();

            //buscar a OS que acabou de ser inserida
            var _os = (from _OS in Banco.Os
                       where (_OS.idCliente == Convert.ToInt32(dropClientes.SelectedValue) &&
                                _OS.Problema.Contains(txtProblema.Text.Trim()) && _OS.dtAbertura == dataabertura)
                       select _OS.idOS).Max();


            // Lançar o primeiro historico da solicitacao
            historico.DataSituacao = DateTime.Now;
            historico.idOS = Convert.ToInt32(_os);
            historico.idFuncionario = 1;
            historico.idSituacao = 1;
            historico.Observacao = "Solicitação realizada pelo portal do cliente em " + DateTime.Now.ToString();

            Banco.HISTORICO_Os.InsertOnSubmit(historico);
            Banco.SubmitChanges();

            txtInicio.Text = string.Empty;

            pnlInserir0.Visible = false;

            PopulaSolicitacoes("");
        }
        else
        {


            try
            {
                DateTime dataabertura = DateTime.Now;
                OS.idCliente = Convert.ToInt32(dropClientes.SelectedValue);
                OS.Problema = txtProblema.Text;
                OS.dtAbertura = dataabertura;
                OS.idEquipameto = Convert.ToInt32(dropEquipamentos.SelectedValue);


                if (rlistBuscaEquipamento.SelectedValue == "1")
                {
                    OS.atendimentocampo = true;
                    OS.idEnderecoEntrega = Convert.ToInt32(dropEnderecosCliente.SelectedValue);
                }
                else
                {
                    OS.atendimentocampo = false;
                }

                Banco.Os.InsertOnSubmit(OS);
                Banco.SubmitChanges();

                //buscar a OS que acabou de ser inserida
                var _os = (from _OS in Banco.Os
                           where (_OS.idCliente == Convert.ToInt32(dropClientes.SelectedValue) &&
                                    _OS.Problema.Contains(txtProblema.Text.Trim()) && _OS.dtAbertura == dataabertura)
                           select _OS.idOS).Max();


                // Lançar o primeiro historico da solicitacao
                historico.DataSituacao = DateTime.Now;
                historico.idOS = Convert.ToInt32(_os);
                historico.idFuncionario = 1;
                historico.idSituacao = 1;
                historico.Observacao = "Solicitação realizada pelo portal do cliente em " + DateTime.Now.ToString();

                Banco.HISTORICO_Os.InsertOnSubmit(historico);
                Banco.SubmitChanges();

                txtInicio.Text = string.Empty;

                pnlInserir0.Visible = false;

                PopulaSolicitacoes("");
            }
            catch (Exception ex)
            {
                // deletar a solicitacao, casa haja algum erro
                Banco.Os.DeleteOnSubmit(OS);
                Banco.SubmitChanges();
                btnIncluir.Text = ex.Message;
            }

            pnlInserir0.Visible = false;

        }
    }

    protected void grdSituacoes_SelectedIndexChanged(object sender, EventArgs e)
    {
        ViewState["idOS"] = grdSolicitacoes.SelectedDataKey["idOS"];
            
        switch (ViewState["btn"].ToString().Trim())
        {
            case "lkbtnEdit":
                {
                    // popular o painel com as iformações da OS


                    var psolicitacao = from os in Banco.Os
                                       where os.idOS == Convert.ToInt32(grdSolicitacoes.SelectedDataKey["idOS"])
                                       select os;

                    OS = psolicitacao.ToList<O>()[0];

                    rlistAtendimentoCampo.SelectedIndex = (bool)OS.atendimentocampo ? 0 : 1;

                    dropEquipamentos.DataBind();
                    dropEquipamentos.SelectedValue = OS.idEquipameto.ToString();

                    txtProblema.Text = OS.Problema;

                    pnlInserir0.Visible = true;
                    
                    break;
                }


            case "lkbtnCancela":
                {
                    Button1_ModalPopupExtender.Show();                 
       
                    break;
                }



            case "lkbVerOS":
                {
                    MultiView1.ActiveViewIndex = 1;               
       
                    break;
                }
        }
       
      
    }
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        PopulaSolicitacoes(txtInicio.Text);

    }

    protected void grdEquipamentos_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {

    }
    protected void btnSim0_Click(object sender, EventArgs e)
    {
        grdSolicitacoes.DeleteRow(grdSolicitacoes.SelectedIndex);
        grdSolicitacoes.DataBind();
    }
    protected void grdEquipamentos_DataBound(object sender, EventArgs e)
    {
        if (grdSolicitacoes.Rows.Count > 0)
        {
            grdSolicitacoes.HeaderRow.Cells[0].Text += " - Quantidade de items: " + grdSolicitacoes.Rows.Count.ToString();
        }
    }
    protected void grdEquipamentos_RowEditing(object sender, GridViewEditEventArgs e)
    {

    }
    protected void btnCancela_Click(object sender, EventArgs e)
    {
        // Limpar campos
        LimpaValoresEndereco();
        txtProblema.Text = "";
        pnlInserir0.Visible = false;
    }
    protected void btnIncluir_Click1(object sender, EventArgs e)
    {
        pnlInserir0.Visible = true;
    }


    protected void rlistBuscaEquipamento_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (rlistBuscaEquipamento.SelectedValue == "1")
        {
            pnlEscolheEnderecos.Visible = true;

            PopulaListaEnerecoCliente();

        }
        else
        {
            pnlEscolheEnderecos.Visible = false;
            lbTituloEndereco.Visible = false;
        }
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        // abrir opcao de add endereco
        pnlInserirEnderecoCliente.Visible = true;
    }
    protected void btnIncluirEndereco_Click(object sender, EventArgs e)
    {
        // Salvar o endereco
        Endereco.idBairro = Convert.ToInt32(endereco_bairro1.idBairro);
        Endereco.Logradouro = txtLogradouro.Text;
        Endereco.numero = Convert.ToInt32(txtNumero.Text);
        Endereco.CEP = txtCEP.Text;
        Endereco.comlemento = txtComplemento.Text;

        Banco.ENDERECOs.InsertOnSubmit(Endereco);
        Banco.SubmitChanges();

        // Captura o codigo do endereço que acabou de ser inserido
        var idEndereco = (from E in Banco.ENDERECOs
                          select E.idEndereco).Max();

        // Lançar o endereço novo para o cliente

        EnderecosCli.idCliente = Convert.ToInt32(dropClientes.SelectedValue);
        EnderecosCli.Ativo = true;
        EnderecosCli.DataCriacao = DateTime.Now;
        EnderecosCli.idEndereco = Convert.ToInt32(idEndereco);

        Banco.ENDERECOS_CLIENTEs.InsertOnSubmit(EnderecosCli);
        Banco.SubmitChanges();

        // Repopula a lista de endereços do cliente
        PopulaListaEnerecoCliente();
        LimpaValoresEndereco();
        pnlInserirEnderecoCliente.Visible = false;
    }

    void PopulaListaEnerecoCliente()
    {
        var dados = from En in Banco.SelecionaEnderecosCliente(Convert.ToInt32(dropClientes.SelectedValue))
                    select En;

        dropEnderecosCliente.Items.Clear();
        dropEnderecosCliente.DataTextField = "Completo";
        dropEnderecosCliente.DataValueField = "idEndereco";

                // Buscar enderecos cadastrados para o cliente
        dropEnderecosCliente.DataSource = dados;
        dropEnderecosCliente.DataBind();  
    }

    void PopulaSolicitacoes(string filtro)
    {

      /*  if (string.IsNullOrEmpty(filtro))
        {
            var dados = from S in Banco.SelecionaSolicitacoesClienteSituacao(Convert.ToInt32(dropClientes.SelectedValue), "1")
                        select S;

            grdSolicitacoes.DataSource = dados;           
        }
        else
        {
            var dados = from S in Banco.SelecionaSolicitacoesClienteSituacao(Convert.ToInt32(dropClientes.SelectedValue), "1")
                        where S.dtAbertura >= Convert.ToDateTime(txtInicio.Text) && S.dtAbertura <= Convert.ToDateTime(txtInicio0.Text) && S.idCliente == 1
                        select S;

            grdSolicitacoes.DataSource = dados;           
        }
        */
        grdSolicitacoes.DataBind();
    }

    void LimpaValoresEndereco()
    {
        txtLogradouro.Text = "";
        txtNumero.Text = "";
        txtCEP.Text = "";
        txtComplemento.Text = "";
        endereco_bairro1.idBairro = "0";
    }

    protected void rlistAtendimentoCampo_SelectedIndexChanged(object sender, EventArgs e)
    {
        rlistBuscaEquipamento.Visible = rlistAtendimentoCampo.SelectedValue.Trim() == "0";

    }
    protected void dropEquipamentos_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    protected void rlistAtendimentoCampo_SelectedIndexChanged1(object sender, EventArgs e)
    {
        if (rlistAtendimentoCampo.SelectedValue.Trim() == "0")
        {
            lbtituloBuscaEquipamento.Visible = true;
            rlistBuscaEquipamento.Visible = true;           
            lbTituloEndereco.Text = "Onde deseja que seja feita a busca e entrega do equipamento?";           
        }
        else
        {
            lbtituloBuscaEquipamento.Visible = false;
            rlistBuscaEquipamento.Visible = false;
            lbTituloEndereco.Text = "Em que endereço deseja receber o técnico?";             
        }

        lbTituloEndereco.Visible = true;
        pnlEscolheEnderecos.Visible = true;
        PopulaListaEnerecoCliente();


    }
    protected void linkInserirEndereco_Click(object sender, EventArgs e)
    {
        pnlInserirEnderecoCliente.Visible = true;
    }
    protected void btn_Click(object sender, EventArgs e)
    {
        ViewState["btn"] = ((Button)sender).ID;
    }
    protected void grdSolicitacoes_RowCreated(object sender, GridViewRowEventArgs e)
    {
        string onmouseoverStyle = "this.style.backgroundColor='#FFFFCC'";

        string onmouseoutStyle = "this.style.backgroundColor='@BackColor'";

        string rowBackColor = "transparent";

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("onmouseover", onmouseoverStyle);

            e.Row.Attributes.Add("onmouseout", onmouseoutStyle.Replace("@BackColor", rowBackColor));

        } 

    }
    protected void LinkButton1_Click1(object sender, EventArgs e)
    {
        ViewState["btn"] = ((LinkButton)sender).ID;
    }
    protected void btnSim_Click(object sender, EventArgs e)
    {
         // popular o painel com as iformações da OS

                    historico.DataSituacao = DateTime.Now;
                    historico.idFuncionario = 1;
                    historico.idOS = Convert.ToInt32(ViewState["idOS"]);
                    historico.idSituacao = 5;
                    historico.Observacao = txtJustificativa.Text;

                    Banco.HISTORICO_Os.InsertOnSubmit(historico);

                    Banco.SubmitChanges();
    }
    protected void btnCancelarEnvioMensagem_Click(object sender, EventArgs e)
    {
        txtMensagem.Text = "";
        txtMensagem.Focus();
    }
    protected void btnEnviar_Click(object sender, EventArgs e)
    {

        SalvarMensagem(txtMensagem.Text, ViewState["NomeFuncionario"].ToString());

        // Limpa o texto
        txtMensagem.Text = "";
        txtMensagem.Focus();

    }


    private void SalvarMensagem(string Texto, string Titulo)
    {
        

        MSG.DataHora = DateTime.Now;
        MSG.idFuncionario = Convert.ToInt32(ViewState["Funcionario"]);
        MSG.idOs = Convert.ToInt32(ViewState["idOS"]);
        MSG.Texto = Texto;

        // Nome do funcionario
        MSG.Titulo = Titulo;

        Banco.MENSAGENs.InsertOnSubmit(MSG);
        Banco.SubmitChanges();

        // Atualizar lista de mensagens
        grdMensagens.DataBind();
    }
    protected void btnLancarAvaliacao_Click(object sender, EventArgs e)
    {

    }
    protected void grdMensagens_RowCreated(object sender, GridViewRowEventArgs e)
    {

    }
   
    protected void grdMensagens_DataBound(object sender, EventArgs e)
    {
        if (grdMensagens.Rows.Count > 0)
        {
            grdMensagens.HeaderRow.Cells[0].Text += " - Quantidade de items: " + grdMensagens.Rows.Count.ToString();
        }
    }

    private string CorpoEmail()
    {

        return " <table style=\"border: 1px solid #C0C0C0; background-color: #F4F4F4; font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #666666;\"" +
                    "        width=\"600px\">" +
                    "        <tr>" +
                    "            <td align=\"center\">" +
                    "                Olá " +
                    "            </td> " +
                    "        </tr>" +
                    "        <tr>" +
                    "            <td>" +
                    "               Acompanhe sua solicitação" +
                    "                <br />" +
                    "                Clique aqui para ativar seu cadastro.</td>" +
                    "        </tr>" +
                    "        <tr>" +
                    "            <td>" +
                    "                Todos os direitos Reservados</td>" +
                    "        </tr>" +
                    "    </table>";

    }
    protected void lkbVerOS_Click(object sender, EventArgs e)
    {
        ViewState["btn"] = ((LinkButton)sender).ID;
    }
    protected void LinkButton11_Click(object sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 0;
    }
}
